home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -screenplay- / shareware / solitarexx / scripts / metternich.srx < prev    next >
Text File  |  2000-02-29  |  2KB  |  121 lines

  1. /**********************************\
  2. ** Metternich v1.0 for Solitarexx **
  3. **      by Michal Szafranski      **
  4. \**********************************/
  5. OPTIONS RESULTS
  6.  
  7. tex = '"Metternich"'
  8. wintex = '"We Have a Winner"'
  9. seq = '0 1 3 7 2 5 11 10 8 4 9 6 0 E'
  10. ADDBUTTON 0 10 "Start"
  11. ADDTEXT 4 42 tex 6
  12. ADDSPACE 7 11
  13. ADDCYCLE 9 12 '"Inf.|Once|Twice|3 Times|4 Times|5 Times|6 Times"' 2 '"Rotate deck"' 16
  14. ADDCYCLE 11 12 '"3-2-1|One|Two|Three"' 1 '"Cards at once"' 17
  15. ADDBUTTON 12 10 "Abort"
  16. ADDTEXT 14 42 tex 6
  17. SELECTGUI 3
  18.  
  19. SCREENSIZE 2 15 7 0
  20. DO i = 0 TO 6
  21.     NEWSTACK 3 8 0 i 1 0 0 15
  22.     stack.i = RESULT
  23. END
  24. NEWSTACK 4 8 0 4
  25. base = RESULT
  26. NEWSTACK 1 8 1 1
  27. deck = RESULT
  28. ADDCARDS deck
  29. CARDSELECT deck 4
  30. NEWSTACK 2 32+8+1 1 2 0 0 0 2 2
  31. waste = RESULT
  32. NEWSTACK 0 64
  33. MOVECARDS deck RESULT
  34. SHUFFLECARDS deck
  35.  
  36. DO FOREVER
  37.     ACTION
  38.     PARSE VAR RESULT act rest
  39.     IF act = 1 THEN EXIT
  40.     IF act = 3 THEN CALL GAME
  41. END
  42.  
  43. GAME:
  44.     CLEANUP deck
  45.     SETGADGET 14 STR tex
  46.     SELECTGUI 4
  47.     sel = 0
  48.     time = 0
  49.     fin = 1
  50.     GETGADGET 9
  51.     gadtimes = RESULT
  52.     GETGADGET 11
  53.     gadcards = RESULT
  54.     ile. = 0
  55.     SELECT
  56.         WHEN gadcards = 0 THEN DO
  57.             ile.0 = 3
  58.             ile.1 = 2
  59.             ile.2 = 1
  60.         END
  61.         WHEN gadtimes = 0 THEN ile. = gadcards
  62.         OTHERWISE DO i = 0 TO gadtimes-1
  63.             ile.i = gadcards
  64.         END
  65.     END
  66.     DO i=0 TO 6
  67.         CARDSELECT deck 1
  68.         MOVECARDS deck stack.i REVERSE
  69.     END
  70.     CARDSELECT deck 1
  71.     MOVECARDS deck base REVERSE
  72.     DO FOREVER
  73.         ACTION
  74.         PARSE VAR RESULT act stack sid card
  75.         IF act = 1 THEN EXIT
  76.         IF act = 2 THEN SELECT
  77.             WHEN sid=1 THEN CALL DODECK
  78.             WHEN sel=0 & card>0 & sid~=4 THEN sel = stack
  79.             WHEN sel>0 & (sel = stack | sid = 4) THEN CALL DOBASE
  80.             WHEN sel=waste & sid = 3 THEN CALL DOSTACKS
  81.             OTHERWISE ERRBEEP
  82.         END
  83.         IF act = 3 THEN DO
  84.             SELECTGUI 3
  85.             RETURN
  86.         END
  87.     END
  88. RETURN
  89. DODECK:
  90.     sel=0
  91.     CARDSELECT deck ile.time
  92.     IF RESULT = '' THEN DO
  93.         CARDSELECT waste 52
  94.         MOVECARDS waste deck REVERSE
  95.         time = time+1
  96.     END
  97.     ELSE MOVECARDS deck waste REVERSE
  98. RETURN
  99. DOSTACKS:
  100.     CARDSELECT sel 1
  101.     PARSE VAR RESULT xx warb xx
  102.     CARDSELECT stack 1
  103.     PARSE VAR RESULT xx wara xx
  104.     IF FIND(seq,warb wara)>0 THEN MOVECARDS sel stack
  105.     ELSE ERRBEEP
  106.     sel = 0
  107. RETURN
  108. DOBASE:
  109.     CARDSELECT sel 1
  110.     PARSE VAR RESULT xx wara xx
  111.     CARDSELECT base 1
  112.     PARSE VAR RESULT xx warb xx
  113.     IF FIND(seq,warb wara)>0 THEN DO
  114.         fin = fin +1
  115.         MOVECARDS sel base
  116.         IF fin = 48 THEN SETGADGET 14 STR wintex
  117.     END
  118.     ELSE ERRBEEP
  119.     sel = 0
  120. RETURN
  121.